SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [paAgregarReestructura] 

@accion INT, --1.- Alta; 2.- Modificar; 3.- Eliminar
@idreestructura INT,
@descripcion VARCHAR(50),
@fechapedido VARCHAR(10),
@fechavigencia VARCHAR(10),
@responsable VARCHAR(50)

AS

BEGIN TRANSACTION
DECLARE @Error INT
SET @Error = 0

-- Manejo de Altas
IF @accion = 1 BEGIN
	 
	-- Alta con Estado = En Elaboracion
	INSERT INTO tb_Reestructuras(Descripcion, FechaPedido, FechaVigencia, Estado, Responsable) VALUES(@descripcion, @fechapedido, @fechavigencia, 12, @responsable)
	SELECT @Error = @@Error
	IF @Error <> 0 GOTO Salir

END
-- Manejo de Modificacion
IF @accion = 2 BEGIN
	
	-- Modificacion sin cambio de estado
	UPDATE tb_Reestructuras SET Descripcion = @descripcion, FechaPedido = @fechapedido, FechaVigencia = @fechavigencia, Responsable = @responsable WHERE IdReestructura = @IdReestructura
	SELECT @Error = @@Error
	IF @Error <> 0 GOTO Salir

END
-- Manejo de Eliminacion
IF @accion = 3 BEGIN
	
	IF NOT EXISTS(SELECT * FROM tb_Reestructuras WHERE IdReestructura = @IdReestructura AND Estado IN(16,18)) BEGIN
		
		DELETE FROM tb_AltasTransferencia WHERE Transferencia IN(SELECT IdTransferencia FROM tb_TransferenciasDeReestructura WHERE Reestructura = @idreestructura)
		DELETE FROM tb_BajasDeTransferencia WHERE Transferencia IN(SELECT IdTransferencia FROM tb_TransferenciasDeReestructura WHERE Reestructura = @idreestructura)
		DELETE FROM tb_TransferenciasDeReestructura WHERE Reestructura = @idreestructura
		DELETE FROM tb_AperturasDeReestructura WHERE Reestructura = @idreestructura
		DELETE FROM tb_CierresDeReestructura WHERE Reestructura = @idreestructura
		DELETE FROM tb_Reestructuras WHERE IdReestructura = @idreestructura
		SELECT @Error = @@Error
		IF @Error <> 0 GOTO Salir

	END

END
-- Manejo del Recalculo de Saldos
IF @accion = 4 BEGIN

	--Llamado al proc de calculo de saldos
	EXEC spActualizarSaldosDeReestructura @IdReestructura
	SELECT @Error = @@Error
	IF @Error <> 0 GOTO Salir

END

Salir:
IF @Error = 0
	COMMIT TRANSACTION
ELSE
	ROLLBACK TRANSACTION






GO
GRANT EXECUTE ON  [dbo].[paAgregarReestructura] TO [Reestructura]
GO
